%module OgreColourValue

%{
#include "OGRE/OgreColourValue.h"
	%}

%import "OgrePrerequisites.i"

namespace Ogre {

    typedef uint32 RGBA;
    typedef uint32 ARGB;
    typedef uint32 ABGR;
    typedef uint32 BGRA;

    class ColourValue
    {
    public:
        static const ColourValue ZERO;
        static const ColourValue Black;
        static const ColourValue White;
        static const ColourValue Red;
        static const ColourValue Green;
        static const ColourValue Blue;

	explicit ColourValue( float red = 1.0f,
			      float green = 1.0f,
			      float blue = 1.0f,
			      float alpha = 1.0f ) : r(red), g(green), b(blue), a(alpha)
        { }

	    bool operator==(const ColourValue& rhs) const;
	    bool operator!=(const ColourValue& rhs) const;

	    float r,g,b,a;

	    RGBA getAsRGBA(void) const;

	    ARGB getAsARGB(void) const;

	    BGRA getAsBGRA(void) const;

	    ABGR getAsABGR(void) const;

	    void setAsRGBA(const RGBA val);

	    void setAsARGB(const ARGB val);

	    void setAsBGRA(const BGRA val);

	    void setAsABGR(const ABGR val);

	    void saturate(void);

	    ColourValue saturateCopy(void) const;


	    void getHSB(Real* hue, Real* saturation, Real* brightness) const;

    };

} // namespace
